package tables

const (
	IdpTaskTypeForCheckFile    = 1 // 任务类型-文件检查
	IdpTaskTypeForCheckProcess = 2 // 任务类型-进程检查

	IdpTaskRankForFull   = 1 // 任务范围-全系统
	IdpTaskRankForBranch = 2 // 任务范围-分支机构
	IdpTaskRankForClient = 3 // 任务范围-设备

	IdpTaskStatusForNormal        = 1 // 任务状态-正常
	IdpTaskStatusForExpired       = 2 // 任务状态-过期自动关闭
	IdpTaskStatusForAdminShutdown = 3 // 任务状态-管理员干预关闭
)

type IdpTask struct {
	Id        int64  `json:"id,string"`
	Name      string `json:"name"`             // 任务名称
	TaskType  int8   `json:"taskType"`         // 任务类型；1-文件检查；2-进程检查；
	StartTime int64  `json:"startTime,string"` // 任务开始时间
	EndTime   int64  `json:"endTime,string"`   // 任务结束时间
	TaskRank  int8   `json:"taskRank"`         // 任务覆盖范围 1- 全部；2-按分支机构发布；3-按设备发布
	MapIds    string `json:"mapIds"`           // 映射ID的数组，TaskRank为1时该字段为[]；TaskRank 为2时该字段为[branchId];TaskRank 为3时该字段为[clientId];
	Details   string `json:"details"`          // 任务细节；json字符串，  进程检查记录进程名称、进程关联文件路径、是否需要检查文件路径； 文件检查：文件路径、md5 ，是否需要检查md5
	Status    int8   `json:"status"`           // 任务状态 1-正常；2-过期自动关闭；3-管理员干预关闭
	AutoCreateInfo
}

func (t *IdpTask) TableName() string {
	return "idp_task"
}

type IdpTaskDetailsForFile struct {
	FilePath string `json:"filePath"` // 文件路径
	MD5      string `json:"md5"`      // 参考md5
	CheckMd5 bool   `json:"checkMd5"` // 是否需要检查文件MD5
}

type IdpTaskDetailsForProcess struct {
	ProcessName  string `json:"processName"`  // 进程名称
	ExePath      string `json:"exePath"`      // 进程关联的执行文件路径
	CheckExePath bool   `json:"checkExePath"` // 是否需要对执行文件路径进行校验
}
